Amazon Mobile AnalyticsのAuto Exportを使ってみる
はじめに
この記事では、Amazon Mobile Analyticsを使用してAndroidのイベントデータをマネジメントコンソールで表示してみました。 Amazon Mobile Analyticsではこれだけでなく、S3へのデータのエクスポート機能も提供しています。 この機能を使用すれば、選択したアプリに対して、JSON形式のファイルが、任意のS3バケット上に保存されるようになります。
Auto Exportを使ってみよう
まずはAmazon Mobile Analyticsのダッシュボードから、Manage Appsを選択します。 下記画面で対象のアプリにチェックをつけ、Enable Auto Export をクリックすると下記画面が表示されるので、 RedShift + S3を選択します。
次はAuto Exportの設定を行います。データ出力先のS3バケットを新規作成するか、既存のS3バケットを選択してください。 IAMロールも必要に応じてここで作成します。
Create Exportボタンを押せばAuto Exportの設定は完了になり、App Management画面にもどります。 次にStart Auto Export to Redshiftボタンを押しましょう。
Amazon S3 to Redshift access roleを必要に応じて作成するか、既存のロールを指定します。 また、ここではRedShiftにアクセスするためのMasterユーザーパスワードとReadユーザーパスワードを設定しておきます。
Create Exportボタンを押し、Exportを開始します。 Cloud Formationを使用して、VPCネットワークやRedShift、S3バケット等必要なリソースをすべて作成します。
データのエクスポートが完了しました。
さきほど指定したS3バケットを確認してみてください。 JSON形式のデータファイルが出力されています。今後は定期的にデータのエクスポートが実行されます。
ドキュメントサンプルにある、次のようなカスタムイベントを実装して何度かsubmitした場合、
public void onLevelComplete(String levelName, String difficulty, double timeToComplete, int playerState) { AnalyticsEvent levelCompleteEvent = analytics.getEventClient().createEvent("LevelComplete") .withAttribute("LevelName", levelName) .withAttribute("Difficulty", difficulty) .withMetric("TimeToComplete", timeToComplete); if (playerState == STATE_LOSE) levelCompleteEvent.addAttribute("EndState", "Lose"); else if (playerState == STATE_WIN) levelCompleteEvent.addAttribute("EndState", "Win"); //Record the Level Complete event analytics.getEventClient().recordEvent(levelCompleteEvent); }
生成されたログは以下のようになります。 プログラムで指定した属性がjson形式のログで出力されていますね。
{"event_type":"LevelComplete","event_timestamp":1437925136419,"arrival_timestamp":1437925139491, "event_version":"3.0","application":{"app_id":"xxxxxxxxxx","cognito_identity_pool_id":"us-east-1:xxxxxxxxx","package_name":"com.example.myapplication","sdk": {"name":"aws-sdk-android","version":"2.2.4"},"title":"My Application","version_name":"1.0","version_code":"1"}, "client":{"client_id":"xxxxxxxxxxxxx","cognito_id":"us-east-1:xxxxxxxxxxxx"}, "device":{"locale":{"code":"ja_JP","country":"JP","language":"ja"}, "make":"Sony","model":"SO-03F","platform":{"name":"ANDROID","version":"4.4.2"}}, "session":{"session_id":"xxxxxxxxxxx","start_timestamp":1437925134944}, "attributes":{"EndState":"Win","LevelName":"Lower Dungeon","Difficulty":"Very Difficult"}, "metrics":{"TimeToComplete":2734.0}} ・ ・
SQL Workbenchを使用し、生成されたRedShiftに接続することができます。 「awsma」というスキーマが作成されているのがわかります。 そのスキーマにetl_logテーブル、eventテーブル、event_stagingテーブル、v_eventビュー があり、アクセスしたデバイス名やセッションID等の情報が格納されています。
参考:JDBC 接続を設定する